<?php
/**
 * Description of APP_Model
 * @author Jose Rodriguez
 */
class APP_Model extends CI_Model{
    var $id = 0;

    public function __construct() {
        parent::__construct();
    }
    
    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }
    
    /**
     * Devuelve el nombre del la clase instaciada sin el sufijo model
     * @return String
     */
    public function modelClassName()
    {
        return strtolower(str_replace('_model','',  get_class($this)));
    }

    /**
     * Realiza inserciones basicas en los modelos
     */
    public function add()
    {
        $this->db->insert($this->modelClassName(),$this);
    }

    /**
     * Realiza la consulta en bd del modelo instaciado por identificador
     * @return Object
     */
    public function getById()
    {
        $rs = $this->db->get_where($this->modelClassName(),array('id'=> $this->getId()));
        return $rs->row();
    }

    /**
     * Actualiza la informacion de un registro.
     */
    public function update()
    {
        $this->db->where('id', $this->getId());
        $this->db->update($this->modelClassName(), $this);
    }

    /**
     * Indica el total de los registros en base de datos de la instancia
     * @return integer
     */
    function countAll()
    {
        return $this->db->count_all($this->modelClassName());
    }
}
?>